const express = require('express')
const router = express.Router()
// 导入book
const BookModel = require('../models/BookModel')

// 注册路由


// 图书列表路由  
router.get('/', async (req, res) => {
  try {
    const data = await BookModel.find()
    res.json({
      status: '3000', // 自己后台命名
      data,
      message: '获取列表成功'
    })
  } catch (error) {
    res.json({
      status: '3001',
      message: '获取列表失败'
    })
  }
})



// 一个图书信息
router.get('/:id', (req, res) => {
  // id参数
  const { id } = req.params // path参数

  BookModel.findById(id, (error, data) => {
    // 如果失败了 返回错误页面
    if (error) {
      res.json({
        status: '3001',
        message: '获取图书失败'
      })
    } else {
      // 返回更新页面
      res.json({
        status: '3000', // 自己后台命名
        data,
        message: '获取图书成功'
      })
    }
  })
})


/* 
添加图书路由 
*/
router.post('/', (req, res) => {
  // 读取请求参数: book对象(没有_id)
  const book = req.body
  // 添加到数据库
  BookModel.create(book, (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.json({
        status: '3001',
        message: '添加图书失败'
      })
    } else {
      res.json({
        status: '3000', // 自己后台命名
        data,
        message: '添加图书成功'
      })
    }
  })
})


/* 
修改路由
*/
router.put('/', (req, res) => {
  // 读取请求参数  book对象 包含_id
  const book = req.body
  // 添加到数据库
  BookModel.updateOne({ _id: book._id }, book, (error, data) => {
    if (error) {
      res.json({
        status: '3001',
        message: '修改图书失败'
      })
    } else {
      res.json({
        status: '3000', // 自己后台命名
        data,
        message: '修改图书成功'
      })
    }
  })
})


/* 
删除的路由
*/
router.delete('/', (req, res) => {
  // - 读取请求参数: id  用query传递id
  const { id } = req.query 
  // 删除对应的文档
  BookModel.deleteOne({ _id: id }, (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.json({
        status: '3001',
        message: '删除图书失败'
      })
    } else { 
      res.json({
        status: '3000', // 自己后台命名
        data,
        message: '删除图书成功'
      })
    }
  })
})

// 导出路由
module.exports = router